<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    //箭头函数开始的时候作用域的this指向一个位置对象后就不会改变当前的this
    const SCHOOL = {
        name: "美丽好美丽"
    }
    window.name = "123";
    console.log(this); //这个this指向的就是window 输出123

    function getName() {
        console.log(this.name); //指向window 使用call 指向SCHOOL
    }
    getName()
    let getName2 = () => {
        console.log(this.name); //指向window 使用call不会改变  仍然指向window
    }
    getName2()
    getName.call(SCHOOL)
    getName2.call(SCHOOL)

    // 箭头函数不能作为构造函数实例化对象
    let Person = (name, age) => {
        this.name = name;
        this.age = age;
    }
    let zhangnan = new Person("王思聪", 1111);
    console.log(zhangnan); //Person is not a constructor

    //箭头函数参数只有一个的话可以省略入参左右的()
    //箭头函数参数里面只有一句话可以省略大括号(如果一句话含有return 那么return也省略)
    let fn = q => q + q;
    console.log(fn(3));

    //箭头函数开始的时候作用域的this指向某一个位置对象后就不会改变当前的this
    const HOME = {
        name: "渣男学习"
    }
    window.name = '123';
    console.log(this); //指向window对象

    function getName() {
        console.log(this.name); //指向window对象 使用call后指向HOME里面的name
    }
    getName()

    function getName2() {
        console.log(this.name); //指向window对象 使用call后 不改变指向
    }
    getName2()
    getName.call(HOME)
    getName2.call(HOME)

    //箭头函数不能作为构造函数实例化对象
    let str = (name, age) => {
        this.name = name;
        this.age = age;
    }
    let zhangshan = new Person("wwww", '1212')
    console.log(zhangshan); //Person is not a constructor

    //箭头函数参数只有一个时,可以去掉旁边入参两边的括号
    //箭头函数里面只有一句话可以省略大括号(如果一句话含有return,那么return也省略)
    let cont = q => q + q
    console.log(cont(3));

    //箭头函数开始的时候作用域的this指向某一个位置对象后就不会改变当前this
    const SCHOOL = {
        name: "学校"
    }
    window.name = '123';
    console.log(this.name); //this指向window
    function getName() {
        console.log(this.name); //this指向window 使用call后 this指向SCHOOL的name
    }
    getName()

    function getName1() {
        console.log(this.name); //this指向window 使用call后 this指向不变
    }
    getName1()
    getName.call(SCHOOL)
    getName1.call(SCHOOL)
</script>

</html>